KURZUS: Számítógépes folyamatirányítás

MODUL: A dinamika

Tanulási útmutatás

| E modul feldolgozása a szokásosnál nagyobb figyelem-koncentrációt igényel. Csak kipihenten fogjon hozzá! Szinte minden mondat jelentésén el kell gondolkodnia. Gyakran a sorok között is olvasnia kell: vagyis bizonyos, korábban tanult elemeket lépten-nyomon fel kell idéznie, és észre kell vennie a kapcsolódási pontokat. Csak lassan haladhat. Ajánlott, hogy esetenként az egyes résztvevők (monitor, task stb.) szerepét magára öltse, és gondolja el, hogyan kellene viselkednie, mit kéne tennie a helyzet diktálta körülmények között. E fáradságáért cserébe a modul talán az egész tananyag legérdekesebb részével ajándékozza meg. Persze az érdekesség (főként annak fokozatai) szubjektív dolog...
A számítógépes folyamatirányító rendszerek a valós időhöz szinkronizált, eseményvezérelt rendszerek. Ez azt jelenti, hogy az egyes feladatokat meghatározott időben, vagy bizonyos események bekövetkeztekor kell elvégezni. A rendszerben mindig annak a programnak kell futnia, amely éppen aktuális feladatot lát el, vagy azért, mert most érkezett el az ideje, vagy azért, mert most következett be egy általa kezelt, választ igénylő esemény. Az irányítás akkor működik megfelelően, hatásosan, ha a technológiai folyamat úgy érzi, hogy a számítógép mindig azt csinálja, amit szükséges, és mindig akkor, amikor kell. A folyamatban egyidejűleg több állapotváltozás következhet be, több olyan esemény, amely választ igényel. Emellett a legkülönbözőbb folyamatváltozókat folyamatosan kell mérni és feldolgozni. Mindez együtt azt jelenti, hogy a számítógépen egy adott pillanatban több programnak kellene futnia. A párhuzamos programfuttatás egyprocesszoros rendszerben nem valósítható meg, így olyan működésmódot kell biztosítani, amely a párhuzamosságot szimulálja, annak tényleges megvalósítása nélkül. Tehát egyfajta optikai csalódást eredményez, a párhuzamosság látszatát kelti, de mégsem az. Ezt a működésmódot virtuálisan párhuzamos programfuttatásnak nevezzük. Úgy vélem, nyilvánvaló, hogy az irányítandó folyamat szempontjából - és itt ez a kizárólagos szempont - teljesen közömbös, hogy a programok futása ténylegesen, vagy "csak" látszólagosan párhuzamos, ha minden feladat a megfelelő időben végrehajtódik.
A virtuális párhuzamosság a processzoridő felosztásával (szeletelésével) és az egyes időszeleteknek ciklikusan más-más programokhoz rendelésével valósítható meg. Ha az időszeletek elég rövidek, akkor egy program sűrűn jut processzoridőhöz, és ez olyan látszatot kelt, mintha mindig ő futna. Minthogy minden program ezt érzi, úgy tűnik, hogy mindig mindegyik fut, tehát párhuzamosan működnek. Ha az időszeletek nőnek, ez a látszat fokozatosan eltűnik. Az időszeletek azonban nem lehetnek túl rövidek sem. A programok közti átkapcsolást az operációs rendszer végzi. Az átkapcsolás bizonyos adminisztrációt igényel (context-mentés, stb.), ha túl gyakran kerül rá sor, az operációs rendszer gyakran fut és sok processzoridőt felemészt. El lehet érni egy olyan határt, amikor már csak az operációs rendszer fut (de minek?) és a felhasználói programoknak egyáltalán nem jut idő.
A fent vázolt működésmód az un. időosztásos (time-sharing) rendszerekre jellemző. A folyamatirányító programrendszerek azonban nem ilyenek. Itt nem kell mindig minden programnak futnia, hanem - az aktuális feladatoktól függően - csak néhánynak. Így az időt nem lehet statikusan, állandó hosszúságú szeletekre osztani, hanem minden program akkor és annyi időt kell, hogy kapjon, amikor és amennyire szüksége van. Az idő felosztását prioritásos vezérléssel kell kombinálni, ami azt jelenti, hogy adott pillanatban a futtatandó programok közül a fontosabb több időt kaphat, mint a kevésbé fontos, amelyiknek pedig nem kell futnia, az egyáltalán nem kap időt.
A folyamatirányító rendszer programjainak a fenti elvek szerinti működtetését az un. real-time monitor valósítja meg.